home *** CD-ROM | disk | FTP | other *** search
/ Mac Power 1997 December / MACPOWER-1997-12.ISO.7z / MACPOWER-1997-12.ISO / AMUG / PROGRAMMING / Raven 1.2.sit / Raven 1.2 / Documents / Raven Description < prev    next >
Text File  |  1997-09-08  |  3KB  |  55 lines

  1. This file contains the source for Raven 1.2 a new C++ framework for
  2. Macintosh programming. Raven is similar to PowerPlant and MacApp but
  3. takes full advantage of newer C++ features, has a more modular
  4. structure, and makes extensive use of programming by contract.
  5.  
  6. There are too many changes to list here, but they boil down to numerous
  7. bug fixes and enhancements, support for the Appearance and Context Menu
  8. Managers, support for opaque panes, StandardAlert is used wherever possible,
  9. some cool deterministic and non-deterministic finite automata classes,
  10. recursive descent parser classes built on top of the automata classes,
  11. and TArray, TSparseArray, TVector, and TSafePtr classes.
  12.  
  13. Like ODF and MacApp Raven makes extensive use of multiple inheritance
  14. by means of mixin classes. Raven also uses the standard C++ classes
  15. wherever possible, including the string class, the standard exception
  16. classes, and STL. Raven also makes use of template classes and RTTI.
  17.  
  18. Raven is divided into four layers: Foundation, Core, Application,
  19. and Esoterica. Each layer is composed of a number of packages. For
  20. example the Core layer has a Files package containing classes to
  21. manage things like reading/writing a file, iterating over files,
  22. accessing the Desktop Manager, and CustomGetFile and CustomPutFile.
  23.  
  24. The Foundation layer contains low level classes for things like 
  25. memory management, debugging, broadcast/listener, exceptions, string 
  26. utilities, and geometry classes.
  27.  
  28. The Core layer includes a large number of generally useful classes for 
  29. things like graphics, sound, files, menus, command objects, drag and 
  30. drop, preferences, etc.
  31.  
  32. The Application layer contains higher level classes for views, windows, 
  33. and application objects.
  34.  
  35. The Esoterica layer contains more exotic classes that most applications 
  36. won't need. It includes classes for compression (using zlib), finite 
  37. automata, regular expressions, parsing, QuickDraw 3D, 2D graphing, 3D 
  38. graphing, and mathematics.
  39.  
  40. Because the lower layers are independant of the higher layers and
  41. coupling between packages is minimized you can easily use parts of
  42. Raven with other frameworks. For example, most of the Foundation
  43. and Core layers can be used with PowerPlant.
  44.  
  45. Raven includes a rich set of debugging tools that include several
  46. excellent debug macros, a powerful debug menu, a framework for
  47. developing unit tests, and a flexible replacement for the default
  48. operator new that keeps a stack crawl for each allocated block.
  49.  
  50. In addition the member functions in Raven classes do a good job of
  51. verifying the validity of their arguments and many of the classes
  52. include Invariant methods to catch bugs within Raven or within ill
  53. behaved subclasses.
  54.  
  55.   -- Jesse (jesjones@halcyon.com)